export default {
	// 字符串去头尾
	tailCut(str){
		return str.replace(/(^\s*)|(\s*$)/g, '')
	},
	/**
	 * 对Date的扩展，将 Date 转化为指定格式的String
	 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
	 * 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
	 * eg:
	 * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
	 * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
	 * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
	 * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
	 * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
	 */
	datePattern(_date,fmt) {
		var o = {
			"M+": _date.getMonth() + 1, //月份
			"d+": _date.getDate(), //日
			"h+": _date.getHours() % 12 == 0 ? 12 : _date.getHours() % 12, //小时
			"H+": _date.getHours(), //小时
			"m+": _date.getMinutes(), //分
			"s+": _date.getSeconds(), //秒
			"q+": Math.floor((_date.getMonth() + 3) / 3), //季度
			"S": _date.getMilliseconds() //毫秒
		};
		var week = {
			"0": "日",
			"1": "一",
			"2": "二",
			"3": "三",
			"4": "四",
			"5": "五",
			"6": "六"
		};
		if (/(y+)/.test(fmt)) {
			fmt = fmt.replace(RegExp.$1, (_date.getFullYear() + "").substr(4 - RegExp.$1.length));
		}
		if (/(E+)/.test(fmt)) {
			fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周") : "") + week[_date.getDay() +
				""]);
		}
		for (var k in o) {
			if (new RegExp("(" + k + ")").test(fmt)) {
				fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
			}
		}
		return fmt;
	},
	/**
	 * @description 字符串转日期对象
	 * @param {Object} str
	 */
	strToDate(str){
		let _arr=str.split('-')
		let _date=new Date();
		_date.setFullYear(parseInt(_arr[0]));
		_date.setMonth(parseInt(_arr[1])-1);
		_date.setDate(parseInt(_arr[2]));
		return _date;
	},
	/**
	 * @description 完整字符串转日期对象
	 * @param {Object} str
	 */
	fullStrToDate(str){
		let ymd=str.split(' ')[0].split('-');
		let tm=str.split(' ')[1].split(':');
		let _date=new Date();
		_date.setFullYear(parseInt(ymd[0]));
		_date.setMonth(parseInt(ymd[1])-1);
		_date.setDate(parseInt(ymd[2]));
		_date.setHours(parseInt(tm[0]));
		_date.setMinutes(parseInt(tm[1]));
		_date.setSeconds(parseInt(tm[2]));
		return _date;
	},
	/**
	 * @description 日期字符串转星期
	 * @param {Object} str
	 */
	getWeekByDateStr(str,fmt){
		var week = {
			"0": "日",
			"1": "一",
			"2": "二",
			"3": "三",
			"4": "四",
			"5": "五",
			"6": "六"
		};
	},
	/**获取某一月的最后一天
	 * @param {Object} year
	 * @param {Object} month
	 */
	getLastDay(year,month){
		let _date=new Date();
		_date.setFullYear(year);
		_date.setMonth(month+1);
		_date.setDate(1);
		let _time=_date.getTime()-(1000*60*60*24);
		_date.setTime(_time);
		return _date.getDate();
	},
	/**
	 * @description 获取当前日期在一年中是第几周
	 */
	getWeekInYear(){
		let d1 = new Date();
		let d2 = new Date();
		if(arguments.length){
			console.log(arguments[0]);
			d1=this.strToDate(arguments[0])
		}
		d2.setMonth(0);
		d2.setDate(1);
		let rq = d1-d2;
		let s1 = Math.ceil(rq/(24*60*60*1000));
		let s2 = Math.ceil(s1/7);
		return s2;
	},
	/**
	 * @description 日期字符串转为数字
	 * @param {Object} _str
	 */
	dateStrToNum(_str) {
		let _n;
		if (_str.indexOf(':') > -1) {
			_str = _str.split(' ')[0].replace(/-/g, '')
			_n = parseInt(_str)
		} else {
			_str = _str.replace(/-/g, '')
			_n = parseInt(_str)
		}
		return _n;
	},
	/**
	 * @description 数组分组
	 * @param {String} key
	 * @param {String} sortType
	 * @param {String} sortKey
	 * @return {Array} 分组完成后的数组
	 */
	groupArr(_arr, key, sortType,sortKey) {
		var map = {}, //分组索引对象，
			dest = [], //输出结果
			i = 0,
			l = _arr.length,
			n = 0;
		if (sortType == "DESC") { //降序
			_arr.sort(function(a, b) {
				if (typeof(a[sortKey]) == 'string') {
					return b[sortKey].localeCompare(a[sortKey]);
				} else {
					return b[sortKey] - a[sortKey];
				}
	
			});
		} else if (sortType == "ASC") { //升序
			_arr.sort(function(a, b) {
				if (typeof(a[sortKey]) == 'string') {
					return a[sortKey].localeCompare(b[sortKey]);
				} else {
					return a[sortKey] - b[sortKey];
				}
	
			});
		} else {
	
		}
	
		for (i; i < l; i++) { //遍历原生数据
			var ai = _arr[i];
			if (!map[ai[key]]) { //如果
				map[ai[key]] = ai[key]; //添加索引
				dest.push({ //添加分组标识和数据
					group: ai[key],
					data: [ai]
				})
			} else {
				for (n; n < dest.length; n++) { //遍历输出结果
					var dj = dest[n];
					if (dj.group == ai[key]) {
						dj.data.push(ai); //追加数据
						break;
					}
				}
			}
		}
		return dest;
	},
	/**比较两个时间字符串大小
	 * @param {String} a	'10:12:19'
	 * @param {String} b	'12:15:53'
	 */
	compareTimeStr(a, b) {
		a = parseInt(a.replace(':', ''))
		b = parseInt(b.replace(':', ''))
		return a - b
	},
	/**
	 * @param {Object} _arr
	 * @param {Object} key
	 */
	classTableGroup(_arr, key) {
		var map = {}, //分组索引对象，
			dest = [], //输出结果
			i = 0,
			l = _arr.length,
			n = 0;
	
		var _out = [{
			group: '周一',
			data: []
		}, {
			group: '周二',
			data: []
		}, {
			group: '周三',
			data: []
		}, {
			group: '周四',
			data: []
		}, {
			group: '周五',
			data: []
		}, {
			group: '周六',
			data: []
		}, {
			group: '周日',
			data: []
		}]
	
		for (i; i < l; i++) { //遍历源数组
			var ai = _arr[i]; //数组元素
	
			if (ai[key] == '周一') {
				_out[0].data.push(ai);
			} else if (ai[key] == '周二') {
				_out[1].data.push(ai);
			} else if (ai[key] == '周三') {
				_out[2].data.push(ai);
			} else if (ai[key] == '周四') {
				_out[3].data.push(ai);
	
			} else if (ai[key] == '周五') {
				_out[4].data.push(ai);
	
			} else if (ai[key] == '周六') {
				_out[5].data.push(ai);
	
			} else if (ai[key] == '周日') {
				_out[6].data.push(ai);
	
			} else {
	
			}
	
	
		}
		return _out;
	}
	
}